package com.ruoyi.business.service;

import java.util.List;
import com.ruoyi.business.domain.JtPurchaseInboundOrder;
import com.ruoyi.common.core.domain.AjaxResult;

/**
 * 采购入库单Service接口
 * 
 * @author Alan Zhang
 * @date 2025-03-29
 */
public interface IJtPurchaseInboundOrderService 
{
    /**
     * 查询采购入库单
     * 
     * @param inboundOrderId 采购入库单主键
     * @return 采购入库单
     */
    public JtPurchaseInboundOrder selectJtPurchaseInboundOrderByInboundOrderId(Long inboundOrderId);

    /**
     * 查询采购入库单列表
     * 
     * @param jtPurchaseInboundOrder 采购入库单
     * @return 采购入库单集合
     */
    public List<JtPurchaseInboundOrder> selectJtPurchaseInboundOrderList(JtPurchaseInboundOrder jtPurchaseInboundOrder);

    /**
     * 新增采购入库单
     * 
     * @param jtPurchaseInboundOrder 采购入库单
     * @return 结果
     */
    public int insertJtPurchaseInboundOrder(JtPurchaseInboundOrder jtPurchaseInboundOrder);

    /**
     * 修改采购入库单
     * 
     * @param jtPurchaseInboundOrder 采购入库单
     * @return 结果
     */
    public int updateJtPurchaseInboundOrder(JtPurchaseInboundOrder jtPurchaseInboundOrder);

    /**
     * 修改采购入库单
     *
     * @param jtPurchaseInboundOrder 采购入库单
     * @return 结果
     */
    public int updateJtPurchaseInboundOrder(JtPurchaseInboundOrder jtPurchaseInboundOrder, String removeItemIds);

    /**
     * 批量删除采购入库单
     * 
     * @param inboundOrderIds 需要删除的采购入库单主键集合
     * @return 结果
     */
    public int deleteJtPurchaseInboundOrderByInboundOrderIds(String inboundOrderIds);

    /**
     * 删除采购入库单信息
     * 
     * @param inboundOrderId 采购入库单主键
     * @return 结果
     */
    public int deleteJtPurchaseInboundOrderByInboundOrderId(Long inboundOrderId);

    /**
     * 删除采购入库单 明细信息
     *
     * @param inboundItemIds 采购入库单主键
     * @return 结果
     */
    public int deleteJtPurchaseInboundOrderItemByInboundItemIds(String inboundItemIds);

    /**
     * 生成采购入库单
     * @param purchaseIds  采购单Id
     * @return
     */
    public AjaxResult genJtPurchaseInboundOrder(String purchaseIds);

    /**
     * 确认入库
     * @param inboundOrderId 入库单 id
     */
    public AjaxResult doInbound(Long inboundOrderId);

    /**
     * 取消
     * @param ids
     * @return
     */
    public int updateJtPurchaseInboundOrderCancelStatus(String ids);
}
